package com.LC._104;

import javax.swing.tree.TreeNode;

public class Solution {
    int Ldepth=0;
    int Rdepth=0;
    int maxDepth=0;
    public int maxDepth(TreeNode root) {
//        dfs(root , 0 , 0 );
        if(root==null) {
            return 0;
        }
        maxDepth = Ldepth;
        maxDepth = Rdepth;
//        TreeNode t = root.left;
        maxDepth(root);
        return 1;
    }

//    private void dfs(TreeNode root, int left, int right) {
//
//        dfs(root , left+1, right);
//        dfs(root , left+1, right+1);
//    }
}
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
//  class Solution {
//     public int minDepth(TreeNode root) {
//         if(root == null) return 0;
//         //这道题递归条件里分为三种情况
//         //1.左孩子和有孩子都为空的情况，说明到达了叶子节点，直接返回1即可
//         if(root.left == null && root.right == null) return 1;
//         //2.如果左孩子和由孩子其中一个为空，那么需要返回比较大的那个孩子的深度
//         int m1 = minDepth(root.left);
//         int m2 = minDepth(root.right);
//         //这里其中一个节点为空，说明m1和m2有一个必然为0，所以可以返回m1 + m2 + 1;
//         if(root.left == null || root.right == null) return m1 + m2 + 1;
//         //3.最后一种情况，也就是左右孩子都不为空，返回最小深度+1即可
//         return Math.min(m1,m2) + 1;
//     }
// }
